def Solve(depot, k):
ind = -1
l = len(depot)
sm = 0
if(l%k):
sm += depot[ind+(l%k)]*2
ind += l%k
for i in range(l//k):
sm += depot[ind+k]*2
ind += k
return sm
def fndMax(p, n):
if(bool(p) and bool(n)):
return max(p[len(p)-1], n[len(n)-1])
if(not(bool(p))):
return n[len(n)-1]
else:
return p[len(p)-1]
t = int(input())
while(t):
n, k = map(int, input().split())
x = list(map(int, input().split()))
neg = []
pos = []
for i in x:
if(i<0):
neg.append(-i)
else:
pos.append(i)
neg.sort()
pos.sort()
sPos = Solve(pos, k)
sNeg = Solve(neg, k)
mx = fndMax(pos, neg)
print(sPos+sNeg-mx)
t-=1
903C - Boxes Packing | 887A - Div 64 |
755B - PolandBall and Game | 808B - Average Sleep Time |
1515E - Phoenix and Computers | 1552B - Running for Gold |
994A - Fingerprints | 1221C - Perfect Team |
1709C - Recover an RBS | 378A - Playing with Dice |
248B - Chilly Willy | 1709B - Also Try Minecraft |
1418A - Buying Torches | 131C - The World is a Theatre |
1696A - NIT orz | 1178D - Prime Graph |
1711D - Rain | 534A - Exam |
1472A - Cards for Friends | 315A - Sereja and Bottles |
1697C - awoo's Favorite Problem | 165A - Supercentral Point |
1493A - Anti-knapsack | 1493B - Planet Lapituletti |
747B - Mammoth's Genome Decoding | 1591C - Minimize Distance |
1182B - Plus from Picture | 1674B - Dictionary |
1426C - Increase and Copy | 520C - DNA Alignment |